//tab时间监听

/*
 * layui的初始化模块可以理解为，引入这个模块的js文件
 * 值得注意的是：layui的模块之间存在依赖关系，例如引入了table模块，它会layui/lay/moudules/table.js
 * 这个文件引入进来，并且它还会将这个模块所依赖的其他模块自动加入进来，
 * 实际引入的模块有：table、form、jquery、layer、laypage、laytpl、util，7个js文件
 * 所以我仅仅初始化了table模块，却能获得form、jquery、layer的模块对象
 */
//layui初始化表格模组
layui.use(['element', 'table','layer','util','upload','transfer'], function(){
	//表格数据，jquery，Tab的切换功能，切换事件监听等，需要依赖element模块
	var $ = layui.jquery
			,table = layui.table
			,form = layui.form
			,layer = layui.layer
			,element = layui.element
			,util = layui.util
			,upload = layui.upload
			,transfer = layui.transfer;
			
	
	//合包数据表格渲染
	//var archivesTable;
	var tableInit = function(data) {
		var tableIns = table.render({
			elem : '#jobsTable',
			//url : 'workSheet/imports',
			data: data,
			method : 'get',
			where : {
			} // 你额外要携带数据，以键值对的方式存入
			,toolbar : '#recordToolbar' // 开启头部工具栏，并为其绑定左侧模板
			,cellMinWidth : 90 // 全局定义所有常规单元格的最小宽度（默认：60）
			,cols : [[ 
			  {type : 'checkbox', fixed: 'left'} // 复选框
			//, {type : 'numbers'} // 序号
			//, {field : 'num', width:80, title: '序号',sort: true, fixed: 'left'}
			, {field : 'jobListNo',width:180, title: '工作单号'}
			, {field : 'getProductManName', title: '取派员'}
			, {field : 'whither', title: '到达地'}
			, {field : 'mannedRequire', title: '配置要求'}
			, {field : 'sender', title: '寄件人'}
			, {field : 'senderCellPhone', title: '寄件人手机号'}
			, {field : 'addressee', title: '收件人'}
			, {field : 'addresseeAddress', title: '收件人地址'}
			, {field : 'addresseeCellPhone', title: '收件人手机'}
			, {field : 'nameOfAPart', title: '品名'}
			, {field : 'factWeight', title: '实际重量'}
			, {field : 'size', title: '体积'}
			, {field : 'safeType', title: '保险类型'}
			, {field : 'safeMoney', title: '保险费'}
			, {field : 'originalPackage', title: '原包装'}
			, {field : 'senderAddress',width:240, title: '寄件人地址',fixed: 'right',style:'background-color: #3c8dbc; color: #fff;'}
			]]
			,page : true // 开启分页
			,limit : 10 // 每页显示的条数
			,limits : [ 5, 10, 20, 50, 100 ] // 每页条数的选择项
			,loading : true // 是否显示加载条(切换分页的时候显示）
			,title : '工作单数据表' // 定义 table 的大标题（在文件导出等地方会用到）
			,id: 'jobsTable' // 设定容器唯一 id
			//,skin: 'row'
			,even : false// 隔行变色
		});
	} ;
	
	//选完文件后不自动上传
    upload.render({
        elem: '#test10'
        ,url: 'workSheet/imports'
        ,auto: false
        ,accept: 'file' //普通文件
        //,multiple: true
        ,exts:'xls|xlsx'//允许上传的文件后缀
        ,bindAction: '#export'
        ,done: function(res){
            //上传完毕
            layer.closeAll();
            var data = res.data;
            for (var i = 0; i< data.length; i++) {
            	data[i].number = i;
            	data[i].jobListNo = "";
            	data[i].getProductManName = "";
            	data[i].status = "0";
            }
            //表格刷新
            tableInit(data);
            //如果上传失败
            if(res.code > 0){
                return layer.msg('导入失败');
            }
            //上传成功
            return layer.msg('导入成功');
            
        }
    	
    });
    
    function rowUpdate(tableId,index,data){
    		layui.$.extend(table.cache[tableId][index],data);
	}
    
    //生成工作单号
    $("#create").click(function(obj){
    	var data = table.checkStatus('jobsTable').data;
    	if(data.length == 0){
			layer.msg("请至少选择一行", {
				icon : 2, //图标，可输入范围0~6
				time : 2500//2秒关闭（如果不配置，默认是3秒）
			});
    	} else {
    		$(".layui-btn-group button").eq(1).addClass("layui-btn-disabled").attr("disabled","disabled");
    		$(".layui-btn-group button").eq(2).removeClass("layui-btn-disabled").removeAttr("disabled");
        	for(let i in data) {
        		let randomStr = getNo();
        		$(".layui-table-box .layui-table-main tr[data-index="+data[i].number+"] td").eq(1).children().text(randomStr);
        		rowUpdate('jobsTable', data[i].number, {jobListNo: randomStr});
        	}
    		//addJobNo(data);
    	}
    	
    	/*//定义一个序号字符串接收数据
    	var nums = '';
    	//遍历数据
    	for(var i=0;i<data.length;i++){
    		nums += data[i].num+",";
    	}
    	//截取字符串去掉一个逗号
    	nums = nums.substring(0,nums.length - 1);
		console.log(nums);
		
    	$.ajax({
			async:false,
			type:"post",
			url:'workSheet/generateNo/'+nums,
			data:{
				
			},
			dataType:'json',
			success:function(data){
				console.log(data)
				for(var i=0;i<table.length;i++){
					var item = table[i];
					item.joblistNo = data[i].joblistNo;
					//刷新数据表格
				    layui.view('TPL_layout').refresh();
				}
				tableInit(data);
				layer.msg("工作单号添加成功", {
					icon : 1, //图标，可输入范围0~6
					time : 2500//2秒关闭（如果不配置，默认是3秒）
				});
			}
		});
    	*/
    	
    });
    
    //安排取派员
    $("#arrange").click(function(data){
    	//获取复选框选中状态
    	var item = table.checkStatus('jobsTable').data;
    	//遍历选中的数据
    	for (var i = 0; i < item.length; i++) {
    		//第一条选中的数据和之后的比较
    		if(item[0].senderAddress != item[i].senderAddress){
    			//地址不一不进行安排
    			layer.msg("地址不一致，不能一起安排取派员");
    			return;
    		}
		}
		$(".layui-btn-group button").eq(3).removeClass("layui-btn-disabled").removeAttr("disabled");
    	//选中一行数据初始化表格
    	initaSsignDispatchersModal(item);
    })
    
    //保存数据
    $("#save").click(function(data){
    	//获取复选框选中状态
    	var item = table.checkStatus('jobsTable').data;
    	
    	layer.open({
    		content:"<div>确认完成此业务单受理？</div>"
    		,yes:function(data){
    			console.log(item);
    			//添加工作单数据
    			$.ajax({
    	  			async:false,
    	  			type: "post", 	
    	  			url:'workSheet/saveJoblist',
    	  			data: JSON.stringify(item),
    	  			//data:{},
    	  			dataType:'json',
    	  			contentType:"application/json;charset=UTF-8",
    	  			success:function(result) {
    	  				if(result == true){
    	  					layer.msg("添加成功");
    	  				}else{
    	  					layer.msg("添加失败");
    	  				}
    	  			}
    	  			
    	  	  	});
	    		$(".layui-btn-group button").eq(2).removeClass("layui-btn-disabled").removeAttr("disabled");
    			layer.closeAll();
    		}
    	})
    });
    
    //复选框时间
    table.on('checkbox', function(obj){
    	var datas = table.checkStatus('jobsTable').data;
    	//console.log(obj.checked); //当前是否选中状态
    	//console.log(obj.data); //选中行的相关数据
    	//console.log(obj.type); //如果触发的是全选，则为：all，如果触发的是单选，则为：one
    	//console.log(table.checkStatus('table-organization').data); // 获取表格中选中行的数据
    	switch(obj.type){
    	case "all": console.log(obj);
			addJobNo(datas);
    		if(obj.checked){
    			$("#dataTable tbody tr").css('background-color','rgb(173, 202, 217)');
    		} else {
    			$("#dataTable tbody tr").css('background-color','#fff');
    			//$(".layui-btn-group button").eq(1).addClass("layui-btn-disabled").attr("disabled","disabled");
    		}
    		break;
    	case "one": 
			addJobNo(datas);
	    	if(obj.checked){
	    		$(obj.tr).css('background-color','rgb(173, 202, 217)');
				//$(".layui-btn-group button").eq(1).removeClass("layui-btn-disabled").removeAttr("disabled");
			} else {
				$(obj.tr).css('background-color','#fff');
			}
    		break;
    	}
    });
    
    function addJobNo(data){
		if (data.length>0) {
			var jobNoNotValNum = 0;
			var canArrangeNum = 0;
			var canSave = 0;
	    	for(let i in data) {
	    		if (data[i].jobListNo==='') {
	    			jobNoNotValNum++;
				} else if (data[i].jobListNo!=='') {
					canArrangeNum++;
				}
	    		if (data[i].getProductManName!==''&&data[i].getProductManName!==undefined) {
					canSave++;
				}
	    	}
	    	if (jobNoNotValNum === data.length) {
	    		$(".layui-btn-group button").eq(1).removeClass("layui-btn-disabled").removeAttr("disabled");
			} else {
				$(".layui-btn-group button").eq(1).addClass("layui-btn-disabled").attr("disabled","disabled");
			}
	    	if (canArrangeNum === data.length) {
	    		$(".layui-btn-group button").eq(2).removeClass("layui-btn-disabled").removeAttr("disabled");
			} else {
				$(".layui-btn-group button").eq(2).addClass("layui-btn-disabled").attr("disabled","disabled");
			}
	    	if (canSave === data.length) {
	    		$(".layui-btn-group button").eq(3).removeClass("layui-btn-disabled").removeAttr("disabled");
			} else {
				$(".layui-btn-group button").eq(3).addClass("layui-btn-disabled").attr("disabled","disabled");
			}
		} else {
			$(".layui-btn-group button").eq(1).addClass("layui-btn-disabled").attr("disabled","disabled");
			$(".layui-btn-group button").eq(2).addClass("layui-btn-disabled").attr("disabled","disabled");
			$(".layui-btn-group button").eq(3).addClass("layui-btn-disabled").attr("disabled","disabled");
		}
    }
    //获得工作单号的方法
    function getNo(){
    	var qz = "GZD";
    	var rq = new Date().format("yyMMdd");
    	var hz = randomString();
    	return qz + rq + hz;
    }
    //随机字符串
    function randomString() {
    	var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    	var maxPos = $chars.length;
    	var pwd = '';
    	for (i = 0; i < 7; i++) {
    		pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    	}
    	return pwd;
    }
    
    
    
    //导入模态框
    $("#import").click(function(){
    	// 弹出一个页面层
		layer.open({
			type : 1 // 基本层类型0~4，1为页面层
			,title : '批量导入合包信息' // 标题
			,area : [ '500px','400px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
			,content : $("#addWrapModal") // 文本、html都行
			,anim : 0 // 弹出动画
			,resize : false // 是否允许拉伸
			,end : function() { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
				// 清空表单
				//$("#addWrapModal")[0].reset();
			}
		});

    });
    
    
  //填写说明
    $("#explain").click(function(){
    	// 弹出一个页面层
		layer.open({
			type : 1 // 基本层类型0~4，1为页面层
			,title : '批量导入合包信息' // 标题
			,area : [ '500px','400px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
			,content : $("#explainModal") // 文本、html都行
			,anim : 0 // 弹出动画
			,resize : false // 是否允许拉伸
			,end : function() { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
				// 清空表单
				//$("#addWrapModal")[0].reset();
			}
		});

    });
    
    //定义职员用于清空数据
    //var staffs='';
    // 初始化为定区指定取派员模态框 -----------------------------------------
    var initaSsignDispatchersModal = function(data){
      //定义职员用于清空数据
      var staffs='';
  	  //弹出一个页面层
  	  layer.open({
  		  type: 1 // 基本层类型0~4，1为页面层
  		  ,title: '分配取派员' // 标题
  		  ,area: ['800px', '550px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
  		  ,content: $("#arrangeModal") // 文本、html都行
  		  ,anim: 0 // 弹出动画
  		  ,resize: false // 是否允许拉伸
  		  ,btn: ['关闭'] //按钮
  	      ,yes: function(){
  	    	  layer.closeAll();
  	    	  //var data = transfer.getData("aipAreaStaffFransfer");
  	    	  //var a = form.val("assignDispatchersForm");
  	       }
  	       /*,btn2: function(){
  	         layer.closeAll();
  	       }*/
  		  ,end : function(){ // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
  			  //清空表单
      		  //$("#assignDispatchersForm")[0].reset();
  		  }    
  	  });
  	  
	  var html = '';
	  for (var i = 0; i < data.length; i++) {
		  //ripAreaId += data[i].ripAreaId + (i == data.length-1 ? "":",");
		  html += "<tr>"+"<td>"+data[i].jobListNo+"</td>"
		  +"<td>"+data[i].sender+"</td>"
		  +"<td>"+data[i].senderCellPhone+"</td>"
		  +"<td>"+data[i].nameOfAPart+"</td>"
		  +"<td>"+data[i].factWeight+"</td>"
		  +"<td>"+data[i].senderAddress+"</td>"
		  +"</tr>";
	  }
	  $("#tb tbody").html(html);
	  
	  //查询该地区下的取派员
  	  $.ajax({
  			type: "get", 
  			url:'workSheet/arrangeStaff',
  			data:{
  				address:data[0].senderAddress
  			},
  			async:false,
  			success:function(result) {
  				staffs = result;
  			}
  			
  	  	});
  	  
  	  
  	  //为定区分配取派员穿梭框
  	  transfer.render({
  		  elem:'#aipAreaStaffFransfer', //指向容器选择器
  		  title:['职员', '分配取派员'], //穿梭框上方标题
  		  id:'aipAreaStaffFransfer',//设定实例唯一索引，用于基础方法传参使用。
  		  //value:staffdata, //初始选中的数据（右侧列表）
  		  data:staffs, //数据源
  		  parseData: function(res){ //用于对数据源进行格式解析
  		    return {
  		      "value": res.staffId //数据值
  		      ,"title": res.staffName //数据标题
  		      ,"disabled": res.disabled  //是否禁用
  		      ,"checked": res.checked //是否选中
  		    }
  		  },
  		  onchange: function(data, index){ //左右数据穿梭时的回调
  			  if (index == "0") {
  				var jData = table.checkStatus('jobsTable').data;
  				for (let i in jData) {
  					$(".layui-table-box .layui-table-main tr[data-index="+jData[i].number+"] td").eq(2).children().text(data[0].title);
  					rowUpdate("jobsTable", jData[i].number, {getProductManName: data[0].title});
  				}
  			  } else {
  				  alert("数据从右往左")
  			  }
  		  },
  		  showSearch:true, //是否开启搜索
  	  });
  	  //为安排取件员表单赋值
  	  form.val('arrangeFrom', {
  		  "jobListNo": data.jobListNo
  		  ,"senderAddress": data.senderAddress
  		  ,"nameOfAPart": data.nameOfAPart
  		  ,"factWeight": data.factWeight
  		  
  	  });
    }

});

Date.prototype.format = function(fmt) { 
    var o = { 
       "M+" : this.getMonth()+1,                 //月份 
       "d+" : this.getDate(),                    //日 
       "h+" : this.getHours(),                   //小时 
       "m+" : this.getMinutes(),                 //分 
       "s+" : this.getSeconds(),                 //秒 
       "q+" : Math.floor((this.getMonth()+3)/3), //季度 
       "S"  : this.getMilliseconds()             //毫秒 
   }; 
   if(/(y+)/.test(fmt)) {
           fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
   }
    for(var k in o) {
       if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
   return fmt; 
}
